﻿using System;
using System.Collections.Generic;

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

using OakEngine.AI.State_Machine;

namespace OakEngine.BaseObject
{
    public abstract class OAK_BaseGameEntity
    {
        Vector2 m_Position;
        public Vector2 Position { get; set; }

        Vector2 m_targetPosition;
        public Vector2 TargetPosition { get; set; }

        Vector2 m_Velocity;
        public Vector2 Velocity { get; set; }

        Vector2 m_Origin;
        public Vector2 Origin { get; set; }

        Rectangle m_Bound;
        public Rectangle Bounds { get; set; }


        Rectangle m_WorldBound;
        public Rectangle WorldBound { get; set; }

        float m_fSpeed;
        public float Speed { get; set; }


        public float m_fRotation;
        public float Rotation { get; set; }

        float m_fRotationRate;
        public float RotationRate { get; set; }

        float m_fDistance;
        public float Distance { get; set; }

        int m_nID;
        public int Id { get; set; }


        static int m_addRef = 0;

        public OAK_BaseGameEntity(int id)
        {
            Id = id;
            m_addRef++;
        }




        public abstract void ChangeState(Oak_IState<OAK_BaseGameEntity> state);
        public abstract void Update(GameTime gameTime);
        public abstract void Render(SpriteBatch batch,ref OakEngine.Camera.Oak_Camera camera);


    }
}
